home *** CD-ROM | disk | FTP | other *** search
- /*
- MP.h
- Version 1.4 (AKA "Developer Release 27")
-
- Header file for the DayStar/Apple Multiprocessing API
- Friday, April 5, 1996 6:08:58 PM
-
- !! WARNING !!
- NAMES BEGINNING WITH "_MP" ARE NOT YET PART OF THE MP API.
- ANY APPLICATION CODE WHICH REFERENCES THESE NAMES IS LIKELY
- TO REQUIRE CHANGES WITH NEW RELEASES OF THE MP LIBRARY.
- */
-
- #ifndef MP_h
- #define MP_h
-
- #include <Types.h>
- #include <CodeFragments.h>
- #include <stdarg.h>
-
-
- #ifdef __cplusplus
- extern "C" {
- #endif
-
-
- #define MPCopyrightNotice \
- "Copyright © 1995, 1996 DayStar Digital, Inc.\n" \
- "Portions Copyright © 1995 Apple Computer, Inc.\n"
-
- #define MPLibraryName "MPLibrary"
- #define MPLibraryCName MPLibraryName
- #define MPLibraryPName "\p" MPLibraryName
-
- #define MP_API_Version "1.4"
- #define MPLibrary_MajorVersion 1
- #define MPLibrary_MinorVersion 4
- #define MPLibrary_Release 0
- #define MPLibrary_DevelopmentRevision 27
-
-
- #define MPLibraryIsLoaded() \
- ((UInt32) _MPIsFullyInitialized != (UInt32) kUnresolvedCFragSymbolAddress \
- && _MPIsFullyInitialized())
-
- #define MPLibraryIsCompatible() \
- _MPLibraryIsCompatible(MP_API_Version, \
- MPLibrary_MajorVersion, \
- MPLibrary_MinorVersion, \
- MPLibrary_Release, \
- MPLibrary_DevelopmentRevision)
-
- typedef SInt32 Duration;
- typedef UInt32 ByteCount;
- typedef UInt32 MPSemaphoreCount;
- typedef UInt32 MPTaskOptions;
-
- typedef OSStatus (*TaskProc)(void *parameter);
- typedef volatile struct _MPTaskID *MPTaskID;
- typedef volatile struct _MPQueueID *MPQueueID;
- typedef volatile struct _MPSemaphoreID *MPSemaphoreID;
- typedef volatile struct _MPCriticalRegionID *MPCriticalRegionID;
- typedef void *(*MPRemoteProcedure)(void *parameter);
- typedef void (*_MPPrintfHandler)(MPTaskID taskID, const char *format, va_list args);
-
- #define NullTaskProc ((TaskProc) 0)
- #define NullMPTaskID ((MPTaskID) 0)
- #define NullMPQueueID ((MPQueueID) 0)
- #define NullMPSemaphoreID ((MPSemaphoreID) 0)
- #define NullMPCriticalRegionID ((MPCriticalRegionID) 0)
- #define NullMPRemoteProcedure ((MPRemoteProcedure) 0)
- #define Null_MPPrintfHandler ((_MPPrintfHandler) 0)
-
-
- #define kMPNoID ((void *) 0)
-
- #define kMPUseDefaultStackSize 0
- #define kMPNormalTaskOptions 0
-
- enum {
- kDurationImmediate = 0,
- kDurationForever = 0x7fffffff
- };
-
-
- enum MPErrorValues {
- kMPFirstError = -29299,
-
- kMPInvalidIDErr = kMPFirstError,
- kMPInsufficientResourcesErr,
- kMPTaskAbortedErr,
- kMPTimeoutErr,
- kMPDeletedErr,
-
- kMPAllocationFailed = kMPInsufficientResourcesErr,
- kMPInvalidTask = kMPInvalidIDErr,
- kMPInvalidQueue = kMPInvalidIDErr,
- kMPInvalidSemaphore = kMPInvalidIDErr,
- kMPInvalidCriticalRegion = kMPInvalidIDErr,
- kMPTaskDeleted = kMPDeletedErr,
- kMPQueueDeleted = kMPDeletedErr,
- kMPSemaphoreDeleted = kMPDeletedErr,
- kMPCriticalRegionDeleted = kMPDeletedErr,
-
- kMPBadEntryPoint,
- kMPUnrecognizedTaskCreationOptions,
- kMPInappropriateStackSize,
- kMPTaskDoesNotOwnCriticalRegion,
- kMPDurationValueNotYetSupported,
- kMPFunctionNotYetImplemented,
- kMPLibraryInternalInconsistencyError,
- kMPTaskSchedulerIsLocked,
-
- kMPFirstUnassignedErrorValue,
-
- kMPLastError = -29250
- };
-
-
-
- extern OSStatus MPCreateTask(TaskProc entryPoint,
- void *parameter,
- ByteCount stackSize,
- MPQueueID notifyQueue,
- void *terminationParameter1,
- void *terminationParameter2,
- MPTaskOptions options,
- MPTaskID *task);
-
- extern OSStatus MPTerminateTask(MPTaskID task, OSStatus terminationStatus);
- extern OSStatus MPCreateQueue(MPQueueID *queue);
-
- extern OSStatus MPNotifyQueue(MPQueueID queue,void *param1, void *param2, void *param3);
-
- extern OSStatus MPWaitOnQueue(MPQueueID queue, void **param1,void **param2,void **param3,Duration timeout);
-
- extern OSStatus MPDeleteQueue(MPQueueID queue);
- extern OSStatus MPCreateSemaphore(MPSemaphoreCount maximumValue, MPSemaphoreCount initialValue, MPSemaphoreID *semaphore);
- extern OSStatus MPSignalSemaphore(MPSemaphoreID semaphore);
- extern OSStatus MPWaitOnSemaphore(MPSemaphoreID semaphore, Duration timeout);
- extern OSStatus MPDeleteSemaphore(MPSemaphoreID semaphore);
- extern OSStatus MPCreateCriticalRegion(MPCriticalRegionID *criticalRegion);
- extern OSStatus MPEnterCriticalRegion(MPCriticalRegionID criticalRegion, Duration timeout);
- extern OSStatus MPExitCriticalRegion(MPCriticalRegionID criticalRegion);
- extern OSStatus MPDeleteCriticalRegion(MPCriticalRegionID criticalRegion);
-
- extern MPTaskID MPCurrentTaskID(void);
-
- extern UInt32 MPProcessors(void);
- extern UInt32 _MPInitializationStatus(void);
-
- extern Boolean _MPIsFullyInitialized(void);
- extern Boolean _MPLibraryIsCompatible(char *api, UInt32 major, UInt32 minor, UInt32 release, UInt32 revision);
-
- extern Boolean _MPTaskIsToolboxSafe(MPTaskID task);
-
-
- extern LogicalAddress MPAllocate(ByteCount size);
- extern LogicalAddress _MPAllocateSys(ByteCount size);
-
- extern void MPFree(LogicalAddress object);
- extern void MPBlockCopy(LogicalAddress from, LogicalAddress to, ByteCount blockSize);
- extern void MPYield(void);
- extern void MPExit(OSStatus status);
- extern void _MPLibraryVersion(char **api,
- UInt32 *major,
- UInt32 *minor,
- UInt32 *release,
- UInt32 *revision);
-
- extern void _MPInitializePrintf(_MPPrintfHandler pfn);
- extern void _MPPrintf(const char *format, ...);
- extern void _MPDebugStr(StringPtr s);
-
- extern void *_MPRPC(MPRemoteProcedure procedure, void *parameter);
-
- extern StringPtr _MPStatusPString(OSStatus status);
-
- extern char *_MPStatusCString(OSStatus status);
-
-
- #define MPCreateBinarySemaphore(semaphore) MPCreateSemaphore(1, 1, (semaphore))
-
-
- #ifdef __cplusplus
- }
- #endif
-
- #endif
-